perm filename MUSIO2.FAI[T,LCS] blob
sn#017510 filedate 1972-12-21 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 ENTRY C18.12,UDP.IN,UDP.OUT,UDP.ENTER,INTWRD
00005 00003 EXTERNAL PROCEDURE UDP.INPUT(INTEGER CHANNEL REFERENCE INTEGER LOC
00007 ENDMK
⊗;
ENTRY C18.12,UDP.IN,UDP.OUT,UDP.ENTER,INTWRD
TITLE MUSIO2
;EXTERNAL PROCEDURE C18_12(INTEGER SCALING_FACTOR;INTEGER P_BUF_12);
A←3
B←1
C←2
MULCON←4
P12←5
P18←6
T←7
PC←10
SP←16
P←17
EXTERNAL GET.18,PUT.12,FINFLAG;
C18.12: MOVE MULCON,-2(P)
MOVE P12,-1(P)
PUSHJ P,GET18
LOOP: HLRE B,(P18)
MUL B,MULCON
ROTC C,14
HRRE B,(P18)
MUL B,MULCON
ROTC C,14
MUMBLE: AOBJP P18,[PUSH P,[.+1]
JRST GET18]
HLRE B,(P18)
MUL B,MULCON
ROTC C,14
MOVEM A,(P12)
AOBJP P12,[PUSH P,[.+1]
JRST PUT12]
HRRE B,(P18)
MUL B,MULCON
ROTC C,14
AOBJP P18,[PUSH P,[.+1]
JRST GET18]
HLRE B,(P18)
MUL B,MULCON
ROTC C,14
HRRE B,(P18)
MUL B,MULCON
ROTC C,14
MOVEM A,(P12)
AOBJP P12,[PUSH P,[.+1]
JRST PUT12]
AOBJP P18,[PUSH P,[LOOP]
JRST GET18]
JRST LOOP
GET18: PUSHJ P,SAVE
PUSHJ P,GET.18
MOVEM 1,ACSAVE+P18
PUSHJ P,RESTORE
JUMPL P18,CPOPJ
MOVE T,[MOVEM A,(P12)]
HRRZ PC,(P) ;GET WHERE IT WILL RETURN TO
FIN1: CAIE PC,MUMBLE ;SKIP OVER LOSING CALL TO GET18!
XCT (PC) ;EXECUTE UP TO WHERE IT WRITES SOMETHING
AOS PC ;INTO BUFFER
CAME T,-1(PC)
JRST FIN1
AOBJP P12,.+1
PUSH P,P12
PUSHJ P,PUT.12
FINISH: SUB P,[XWD 4,4]
JRST @3(P)
PUT12: PUSHJ P,SAVE
PUSH P,P12
PUSHJ P,PUT.12
MOVEM 1,ACSAVE+P12
RESTOR: MOVSI ACSAVE
BLT P18
POPJ P,
SAVE: MOVEI ACSAVE
BLT ACSAVE+P18
CPOPJ: POPJ P,
ACSAVE: BLOCK 1+P18
;EXTERNAL PROCEDURE UDP.INPUT(INTEGER CHANNEL; REFERENCE INTEGER LOC;
; INTEGER COUNT,BLOCK)
;EXTERNAL PROCEDURE UDP.OUTPUT(INTEGER CHANNEL; REFERENCE INTEGER LOC
; INTEGER COUNT,BLOCK)
;EXTERNAL PROCEDURE UDP.ENTER(INTEGER CHANNEL; INTEGER PSWD;
; REFERENCE INTEGER EOF)
UDP.IN: SKIPA 4,[INPUT 1]
UDP.OU: MOVE 4,[OUTPUT 1]
MOVE 2,-4(P)
DPB 2,[POINT 4,4,12]
MOVS 1,-2(P)
SETCA 1,1
ADD 1,-3(P)
MOVE 2,-1(P)
MOVE 3,[JRST UDP.RT]
XCT 4
UDP.RT: SUB P,[XWD 5,5]
JRST @5(P)
UDP.EN: MOVE 4,[ENTER 5]
MOVE 5,-2(P)
SETZB 6,7
SETZ 10,
MOVE 2,-3(P)
DPB 2,[POINT 4,4,12]
SETZM 1,@-1(P)
XCT 4
SETOM 1,@-1(P) ;FAILED!
SUB P,[XWD 4,4]
JRST @4(P)
INTWRD: 0
END